Redshiftでスキーマやテーブル一覧を取得したい
データアナリティクス事業本部の荒木です。
Pythonのredshift-connectorを使ってRedshiftのテーブル一覧等を取得したいなと思ったので、 Redshiftのユーザ定義のスキーマやテーブルの一覧を取得したいときの方法についてまとめたいと思います。
本題
システムテーブルとビューについて
自分で作成したスキーマやテーブルの情報を取得したい場合、システム操作に関連するデータベースにクエリを実行することで情報を取得することができます。
Amazon Redshift には、システムの動作に関する情報を含む多くのシステムテーブルとビューがあります。これらのシステムテーブルとビューには、その他のデータベーステーブルと同じ方法でクエリを実行できます。
システムテーブルとビューについて
ユーザ定義のテーブルのみ取得したいとき
一番よく使うんじゃないかなと思うのは、すべてのユーザ定義のテーブル情報が表示されるSVV_TABLE_INFO
です。
クライアントツールで以下クエリを実行することでデータベース、スキーマ、テーブルの情報を取得することが可能です。
それ以外の情報を取得したい場合はこちらを参照
SELECT database, schema, table FROM SVV_TABLE_INFO
カラム名も取得したいとき
テーブルのカラム名も取得したい場合はSVV_COLUMNS
から取得することができます。
データベース、スキーマ、テーブルに加えてカラム名、precision、scaleの情報も取得することができます。
それ以外の情報を取得したい場合はこちらを参照
SELECT database_name, schema_name, table_name, column_name, data_type, data_type, numeric_scale FROM SVV_COLUMNS
似たようなものでSVV_ALL_COLUMNS
がありますが、ユーザ定義以外のすべてのテーブルのカラム等も含まれるため、ユーザ定義のものだけ取得したい場合にはSVV_COLUMNS
を使用する必要があります。
まとめ
全然難しいことはないですが、Redshiftのテーブル一覧取得したりすることとかあまりなかったので学びになりました。pythonやSQL初学者の方は知っておくと役に立つかなと思います。